var express = require('express');
var router = express.Router();
var md5 = require("md5");
// 引入数据库
var usersDAO = require("../bin/cn/usersDAO.js");
var dailyDAO = require("../bin/cn/dailyDAO.js");
var cataDAO = require("../bin/cn/catalogDAO.js");
// 引入time
var time = require('../bin/libs/time.js');
var isLogin = require('../bin/libs/isLogin.js');



/* 日常信息. */
router.get('/day', isLogin)
router.get('/day', function(req, res) {
  // 先查cataDAO表
  cataDAO.findOne({userID:req.session.user._id})
  .then(cData=>{
    if(cData){
      dailyDAO.findOne({userID:req.session.user._id,date:time('date').date})
      .then(data=>{
        res.json({err:0,msg:"数据库",data:{cData,data}});
        if(!data){
          var d = new dailyDAO({
            userID:req.session.user._id,
            date:time('date').date,
            year:time('day').year,
            month:time('day').month,
            day:time('day').day,
            arr:[],
          });
          d.save();
        }
      })
      .catch(err=>{
        res.json({err:4,msg:"数据库查询失败"});
      })
    }else{
      var c = new cataDAO({userID:req.session.user._id,arr:[]})
      c.save();
      res.json({err:0,msg:"数据库创建成功",data:null});
    }
  })
  .catch(err=>{
    res.json({err:4,msg:"数据库查询失败"});
  })
});

/* 日常信息打卡. */
router.post('/day', isLogin)
router.post('/day', function(req, res) {
  // （json字符串）数组转换
  var arr1 = JSON.parse(req.body.arr);
  var arr2 = [];
  for(var i=0;i<arr1.length;i++){
    arr2.push({list:arr1[i],time:time('hhmm').date})
  }
  dailyDAO.update({userID:req.session.user._id,date:time('date').date},{
    $addToSet:{arr:{$each:arr2}}
  })
  .then(data=>{
    console.log(data);
  })
  .catch(err=>{
    console.log("失败了")
  })
  res.json({err:0,msg:"签到成功"});
});


// 查看签到选项
router.get('/save', isLogin)
router.get('/save',function(req,res){
  cataDAO.findOne({userID:req.session.user._id})
  .then(data=>{
    res.json({err:0,msg:"管理签到选项",data:data});
    if(!data){
      var c = new cataDAO({userID:req.session.user._id,arr:[]})
      c.save();
    }
  })
  .catch(err=>{
    res.json({err:1,msg:"数据库查询失败"});
  })
  
})
// 保存签到选项(主要是数组)，先查询，有则更新，无则加
// /save（post）接口已删除



// 新增签到项目
router.post('/item/add', isLogin)
router.post("/item/add",(req,res)=>{
  cataDAO.update({userID:req.session.user._id},{
    $addToSet:{arr:req.body.msg}
  })
  .then(data=>{
    if(data.nModified){
      res.json({err:0,msg:"新建成功"});
    }else{
      res.json({err:1,msg:"不允许重复"});
    }
  })
  .catch(err=>{
    res.json({err:3,msg:"数据库查询失败"});
  })
  
})
// 更新签到项目
router.post('/item/update', isLogin)
router.post("/item/update",(req,res)=>{
  cataDAO.findOne({userID:req.session.user._id,arr:{$eq:req.body.msg2}})
  .then(data=>{
    if(data){
      res.json({err:1,msg:"不能重复"});
    }else{
      cataDAO.update({userID:req.session.user._id,arr:req.body.msg1},{
        $set:{"arr.$":req.body.msg2}
      })
      .then(data=>{
        res.json({err:0,msg:"更新成功"});
      })
      .catch(err=>{
        res.json({err:2,msg:"数据库连接失败"});
      })
    }
  })
  .catch(err=>{
    res.json({err:2,msg:"数据库连接失败"});
  })
})
// 删除签到项目
router.post('/item/del', isLogin)
router.post("/item/del",(req,res)=>{
  cataDAO.update({userID:req.session.user._id},{
    $pull:{arr:req.body.msg}
  })
  .then(data=>{
    dailyDAO.update({userID:req.session.user._id},{
      $pull:{arr:{list:req.body.msg}}
    },{multi:true})
    .then(data=>{
      console.log(data);
    })
    .catch(err=>{
      console.log("删除签到项目失败");
    })
  })
  .catch(err=>{
    console.log("网络猝");
  })
  res.json({err:0,msg:"删除成功"});
})
module.exports = router;